package com.mjf.scala.chapter10

/**
 * 隐式函数
 * -可以动态的扩展类的功能
 * -当编译器第一次编译失败的时候，会在当前环境中查找能编译通过的方法，该方法用于将类型进行转换，
 *    转换之后，进行二次编译，实现对类功能的扩展
 */
object Scala01_TestImplicit {
  def main(args: Array[String]): Unit = {

    println(2.max(5))
    println(2.jMax(5))

  }

  // 将Int类型数据，转换为JRichInt
  implicit def convert(a: Int): JRichInt = {
    new JRichInt(a)
  }

}

class JRichInt(var self: Int) {

  def jMax(i: Int): Int = {
    if (self < i) i else self
  }

  def jMin(i: Int): Int = {
    if (self < i) self else i
  }

}
